using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using GestaoEventos.Interface;
using GestaoEventos.DataAccess;

namespace GestaoEventos.Business
{
       public class B_Usuario
       {
           #region Atributos

           private I_Usuario _IUsuario;

           #endregion

           #region Propriedades

           public I_Usuario IUsuario
           {
               get { return _IUsuario; }
               set { _IUsuario = value; }
           }

           #endregion

           #region Construtores

           public B_Usuario()
           {
               try
               {
                   _IUsuario = new I_Usuario();
               }
               catch(Exception e)
               {
                   throw e;
               }
           }
           public B_Usuario(I_Usuario IObj)
           {
               try
               {
                   _IUsuario = IObj;
               }
               catch(Exception e)
               {
                   throw e;
               }
           }

           #endregion

           #region Métodos Publicos

           public int Inserir()
           {
               try
               {
                   D_Usuario DUsuario = new D_Usuario();
				   ValidarRegraNegocio();
                   return DUsuario.Insert(_IUsuario);
               }
               catch(Exception e)
               {
                   throw e;
               }
           }
           public int Atualizar()
           {
               try
               {
                   D_Usuario DUsuario = new D_Usuario();
				   ValidarRegraNegocio();
                   return DUsuario.Update(_IUsuario);
               }
               catch(Exception e)
               {
                   throw e;
               }
           }
           public int Deletar()
           {
               try
               {
                   D_Usuario DUsuario = new D_Usuario();
                   return DUsuario.Delete(_IUsuario);
               }
               catch(Exception e)
               {
                   throw e;
               }
           }
           public ArrayList Selecionar()
           {
               try
               {
                   D_Usuario DUsuario = new D_Usuario();
                   return DUsuario.Select(_IUsuario);
               }
               catch(Exception e)
               {
                   throw e;
               }
           }

           #endregion

		   #region Método Especiais

		   public void ValidarRegraNegocio()
		   {
			   //Regra de negócio - validação
			   string Erro = "";
			   if (RegrasGerais.ValidacaoNome(_IUsuario.Nome, ref Erro))
				   throw new SystemException(Erro);

			   if (RegrasGerais.ValidacaoTelefone(_IUsuario.Telefone, ref Erro))
				   throw new SystemException(Erro);

			   if (RegrasGerais.ValidacaoCelular(_IUsuario.Celular, ref Erro))
				   throw new SystemException(Erro);

			   if (RegrasGerais.ValidacaoEmail(_IUsuario.Email, ref Erro))
				   throw new SystemException(Erro);
		   }

		   #endregion
	   }
}

